#!/usr/bin/env bun

import PptxGenJs from 'pptxgenjs';

async function testBackgroundColor() {
  console.log('🎨 测试PPT背景色设置...');
  
  try {
    const ppt = new PptxGenJs();
    
    // 设置PPT基本属性
    ppt.author = '测试';
    ppt.title = '背景色测试';
    ppt.layout = 'LAYOUT_WIDE';
    
    console.log('📄 创建测试幻灯片...');
    
    // 测试1: 使用slide.background属性
    const slide1 = ppt.addSlide();
    console.log('尝试设置slide.background...');
    slide1.background = { color: '1a1a2e' };  // 深蓝色
    slide1.addText('测试1: slide.background', {
      x: 1, y: 3, w: 8, h: 1,
      fontSize: 24, color: 'ffffff', bold: true
    });
    
    // 测试2: 使用slide.addShape作为背景
    const slide2 = ppt.addSlide();
    console.log('尝试使用addShape作为背景...');
    slide2.addShape((ppt as any).shapes.RECTANGLE, {
      x: 0, y: 0, w: 10, h: 5.625, // 16:9 比例
      fill: { color: '1a1a2e' },
      line: { color: '1a1a2e', width: 0 }
    });
    slide2.addText('测试2: addShape背景', {
      x: 1, y: 3, w: 8, h: 1,
      fontSize: 24, color: 'ffffff', bold: true
    });
    
    // 测试3: 设置幻灯片背景 - 另一种方法
    const slide3 = ppt.addSlide();
    console.log('尝试设置slide背景属性...');
    // 尝试直接在addSlide时设置
    slide3.background = { fill: '1a1a2e' };
    slide3.addText('测试3: background fill', {
      x: 1, y: 3, w: 8, h: 1,
      fontSize: 24, color: 'ffffff', bold: true
    });
    
    // 测试4: 使用hex格式
    const slide4 = ppt.addSlide();
    console.log('尝试使用#前缀的hex颜色...');
    slide4.background = { color: '#1a1a2e' };
    slide4.addText('测试4: hex颜色', {
      x: 1, y: 3, w: 8, h: 1,
      fontSize: 24, color: '#ffffff', bold: true
    });
    
    const outputPath = '/Users/ahata/Downloads/background-test.pptx';
    console.log(`💾 保存测试文件到: ${outputPath}`);
    
    await new Promise((resolve, reject) => {
      ppt.writeFile({ fileName: outputPath })
        .then(() => {
          console.log('✅ 背景色测试文件生成成功');
          resolve(void 0);
        })
        .catch(reject);
    });
    
  } catch (error) {
    console.error('❌ 背景色测试失败:', error);
  }
}

if (import.meta.main) {
  testBackgroundColor();
}
